﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace eDoc.Controls.User
{
    public partial class ucAddUser : System.Web.UI.UserControl
    {
        private string userEdit = "";
        private string partnercode = BO.Common.PartnerCode;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["EditUser"] != null && Session["EditUser"].ToString()!="")
                userEdit = Session["EditUser"].ToString();

            if (!IsPostBack)
            {
                BindData();
                BindMenu();
            }
        }

        private void BindData()
        {
            DataTable dtAppMode = new DataTable();
            dtAppMode = BO.Data.Select_AppMode();
            ddlAppMode.DataValueField = "ID";
            ddlAppMode.DataTextField = "Mode_Name";
            ddlAppMode.DataSource = dtAppMode;
            ddlAppMode.DataBind();

            if (userEdit != "")
            {
                DataTable dt = new DataTable();
                dt = BO.Data.Select_User_by_Username(userEdit, partnercode);
                if (dt != null && dt.Rows.Count > 0)
                {
                    txtUsername.Text = dt.Rows[0]["Username"].ToString();
                    txtUsername.Enabled = false;
                    txtUdid.Text = dt.Rows[0]["Udid"].ToString();
                    if (Convert.ToBoolean(dt.Rows[0]["SupperUser"]))
                        chkSupperUser.Checked = true;
                    else
                        chkSupperUser.Checked = false;
                    hdPass.Value = dt.Rows[0]["Password"].ToString();
                    btAddUser.Text = "Cập nhật";
                    chkChangePass.Visible = true;
                    ddlAppMode.SelectedValue = dt.Rows[0]["AppMode"].ToString();
                    if (Convert.ToBoolean(dt.Rows[0]["Actived"]))
                        chkActive.Checked = true;
                    else
                        chkActive.Checked = false;

                    if (Convert.ToBoolean(dt.Rows[0]["Disable"]))
                        chkDisable.Checked = true;
                    else
                        chkDisable.Checked = false;
                }

               

                ltrUserTitle.Text = "Cập nhật";
            }
            else
            {
                ltrUserTitle.Text = "Thêm mới";
            }

            
        }

        private void BindMenu()
        {
             DataTable dtMenu = new DataTable();
                dtMenu = BO.Data.Select_User_Menu(userEdit);
                if (dtMenu != null && dtMenu.Rows.Count > 0)
                {
                    hdMenuID.Value = dtMenu.Rows[0]["Menu_ID"].ToString();
                }

            DataTable dt = new DataTable();
            dt = BO.Data.Select_MenuChild_All();
            repMenu.DataSource = dt;
            repMenu.DataBind();
        }

        protected string ReturnChecked(string id)
        {
            if(hdMenuID.Value=="")
                return "";
            else
            {
                string[] ids = hdMenuID.Value.Split(",".ToCharArray());

                if(BO.Common.CheckMenuID(ids,id))
                    return "Checked";
                else
                    return"";
            }
        }

        protected void btAddUser_Click(object sender, EventArgs e)
        {
            if (userEdit == "")
            {
                string user = txtUsername.Text.ToLower().Trim();
                string pass = txtPassword.Text.Trim();
                string udid = txtUdid.Text.Trim();
                bool blSupperUser = chkSupperUser.Checked;

                

                if (user == "")
                {
                    lblNote.Text = "Bạn chưa nhập tên người dùng!";
                    return;
                }

                if (pass == "")
                {
                    lblNote.Text = "Bạn chưa nhập mật khẩu";
                    return;
                }

                if (!BO.Common.SpecialCharacters.Check(pass))
                {
                    lblNote.Text = "Mật khẩu không được có ký tự đặc biệt sau : % , & , ? !";
                    return;
                }
                /*
                if (!chkSupperUser.Checked)
                {
                    if (udid == "")
                    {
                        lblNote.Text = "Bạn chưa nhập Udid!";
                        return;
                    }
                }
                */
                DataTable dt = new DataTable();
                if (hdMenuID.Value != "")
                {
                    //dt = BO.Data.Insert_User(user, BO.Common.CreateMD5Hash(pass), udid, partnercode, Convert.ToBoolean(chkSupperUser.Checked), Convert.ToInt32(ddlAppMode.SelectedValue), Convert.ToBoolean(chkActive.Checked), Convert.ToBoolean(chkDisable.Checked), txtEmail.Text.Trim().ToLower());
                    dt = BO.Data.Insert_User(user, BO.Common.CreateMD5Hash(pass), udid, partnercode, Convert.ToBoolean(chkSupperUser.Checked), Convert.ToInt32(ddlAppMode.SelectedValue), Convert.ToBoolean(chkActive.Checked), Convert.ToBoolean(chkDisable.Checked), txtEmail.Text.Trim().ToLower());
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        if (dt.Rows[0][0].ToString() == "0")
                        {
                            lblNote.Text = "Bạn đã thêm mới User thành công!";

                            BO.Data.Insert_User_Menu(txtUsername.Text.Trim().ToLower(), hdMenuID.Value.Trim());

                            Response.Redirect("/listuser.aspx");
                        }
                        else
                        {
                            lblNote.Text = "Đã tồn tại User như vậy trong hệ thống!";
                            txtUsername.Focus();
                        }
                    }
                    else
                    {
                        lblNote.Text = "Không thêm mới được User!";
                    }
                }
                else
                {
                    lblNote.Text = "Bạn chưa chọn Permission!";
                }
            }
            else
            {

                string passEdit = "";
                if (chkChangePass.Checked)
                {
                    if (txtPassword.Text.Trim() == "")
                    {
                        lblNote.Text = "Bạn chưa nhập mật khẩu!";
                        return;
                    }

                    if (!BO.Common.SpecialCharacters.Check(txtPassword.Text.Trim()))
                    {
                        lblNote.Text = "Mật khẩu không được có ký tự đặc biệt sau : % , & , ? !";
                        return;
                    }

                    passEdit = BO.Common.CreateMD5Hash(txtPassword.Text.Trim());
                }
                else
                {
                    passEdit = hdPass.Value.Trim();
                }
                if(hdMenuID.Value!="")
                {
                    BO.Data.Update_User(txtUsername.Text.Trim().ToLower(), partnercode, passEdit, txtUdid.Text.Trim(), Convert.ToBoolean(chkSupperUser.Checked), Convert.ToInt32(ddlAppMode.SelectedValue), Convert.ToBoolean(chkActive.Checked), Convert.ToBoolean(chkDisable.Checked), txtEmail.Text.Trim().ToLower());
                    BO.Data.Update_User_Menu(txtUsername.Text.Trim().ToLower(), hdMenuID.Value);
                    BO.Cached.RemoveCache(BO.Cached.CacheName.Cache_Select_User_Menu(txtUsername.Text.Trim().ToLower()));
                    Session["EditUser"] = "";
                    Response.Redirect("/listuser.aspx");
                }
                else
                {
                    lblNote.Text="Bạn chưa chọn Permission!";
                }
            }
        }

        protected void btCancel_Click(object sender, EventArgs e)
        {
            Session["EditUser"] = "";
            Response.Redirect("/listuser.aspx");
        }
    }
}